import java.util.Arrays;
import java.util.Scanner;

public class test1 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(); // 市民数量
        int m = in.nextInt(); // 房产数量
        int V = in.nextInt(); // 补贴金金额
        // 计算房价和可负担的差值(存在有些人有多的钱,所以也可以直接拿出来使用)
        // 直接排序后补充给需要钱最少的人
        int[] nprice = new int[n]; // 市民分别可负担的房价
        int[] mprice = new int[m]; // 实际上的房价
        for (int i = 0; i < n; i++) {
            nprice[i] = in.nextInt();
        }
        for (int i = 0; i < m; i++) {
            mprice[i] = in.nextInt();
        }
        System.out.println(getResult(nprice,mprice,V));
    }
    public static int getResult(int[] nprice,int[] mprice,int V){
        int n = nprice.length;
        int m = nprice.length;
        int count = 0;
        int min = Math.min(n,m);
        int[] flag = new int[min];
        if(n>m) count = n-m; // 先得出不管怎么样都没有房的
        for (int i = 0; i < n; i++) {
            flag[i] = nprice[i]-mprice[i];
        }
        count+=getCount(flag,V);
        return count;
    }

    public static int getCount(int[] flag,int V){
        // 计算总金额,先对flag进行排序,然后先让能买得起的先买房
        Arrays.sort(flag);
        int count = 0;// 记录没有钱的人数
        for (int i = flag.length-1; i>=0 ; i--) {
            V+=flag[i]; // 当前政府的余额
            if(V<0) {
                // 钱不够了
                count = i+1;
                break;
            }
        }
        return count;
    }

//    public static int getResult(int[] nprice,int[] mprice,int V){
//        // 先判定是不是所有人都有房
//        int n= nprice.length;
//        int m= mprice.length;
//        int count = 0; //最后没有房的人数
//        // 让钱最多的人去买最便宜的房子,这样就可以省钱
//        Arrays.sort(mprice);
//        Arrays.sort(nprice);
//        if(n>m){
//            // 人数大于房间数 有人没有房
//            count = n-m; // 先得出不管怎么样都没有房的
//            int[] flag = new int[m];
//            for (int i = 0; i < m; i++) {
//                flag[i] = nprice[n-1-i]-mprice[i];
//            }
//            count+=getCount(flag,V);
//        }else {
//            // 有多余或者房间数量刚好够
//            int[] flag = new int[n];
//            for (int i = 0; i < n; i++) {
//                flag[i] = nprice[n-1-i]-mprice[i];
//            }
//            count+=getCount(flag,V);
//        }
//
//        return count;
//    }
//    public static int getCount(int[] flag,int V){
//        // 计算总金额,先对flag进行排序,然后先让能买得起的先买房
//        int count = 0;// 记录没有钱的人数
//        for (int i = 0; i< flag.length ; i++) {
//            V+=flag[i]; // 当前政府的余额
//            if(V<=0) {
//                // 钱不够了
//                count = flag.length-i;
//                break;
//            }
//        }
//        return count;
//    }
}
